package data;


import java.sql.Connection;
import java.sql.Driver;
import java.sql.DriverManager;
import java.sql.SQLException;


public class ConnectionManager {
	private static ConnectionManager cm;
	private Driver dBDriver = null;
	//private static Properties dbprops = new Properties();
	private String username = "root";
	private String password = "";
	private String driver = "com.mysql.jdbc.Driver";
	private String uri = "jdbc:mysql://127.0.0.1:3306/sosplanet"; 
	
	private ConnectionManager() {
		try {
			dBDriver = (Driver) Class.forName(driver).newInstance();
			DriverManager.registerDriver(dBDriver);
		}catch (Exception e) {
			System.err.println("Unable to register JDBC Driver");
			e.printStackTrace();
		}
	}
	/*private ConnectionManager() {
		try {
			InputStream is = Thread.currentThread().getContextClassLoader().getResourceAsStream("dbconfiguration.properties"); 
			dbprops.load(is);
		} catch (Exception e1) {
			System.err.println("El fichero de propiedades de la BDs no se ha encontrado");
			e1.printStackTrace();
		}
		
		try {
			String driverName =  dbprops.getProperty("driverName");
			dBDriver = (Driver) Class.forName(driverName).newInstance();
			DriverManager.registerDriver(dBDriver);
		}catch (Exception e) {
			System.err.println("Unable to register JDBC Driver");
			e.printStackTrace();
		}
	}*/

	public static synchronized ConnectionManager getInstance() {
		if (cm == null) {
			cm = new ConnectionManager();
		}
		return cm;
	}

    public Connection checkOut() {
    	Connection conn = null;

    	try {
    		/*String uri = dbprops.getProperty("dBUri");
    		String user = dbprops.getProperty("username");
    		String passwd  = dbprops.getProperty("password");*/
    		conn = (Connection) DriverManager.getConnection(uri, username ,password);
    	}catch (Exception e) {
    		System.err.println("Unable to open a new JDBC connection");
    		e.printStackTrace();
    	}

    	return conn;
    }

    public void checkIn(Connection conn) {
    	try {
    		conn.close();
    	}catch (SQLException e) {
    		e.printStackTrace();
    	}
    }
    
    protected void finalize() {
    	try {
    		DriverManager.deregisterDriver(dBDriver);
    	}catch (SQLException e) {
    		System.err.println("Unable to deregister JDBC driver");
    		e.printStackTrace();
    	}
    }
}
